#ifndef POST_PROCESS_COMMON_FUNC_H
#define POST_PROCESS_COMMON_FUNC_H

#include <algorithm>
#include <array>
#include <boost/foreach.hpp>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Dense>
#include <memory>
#include <vector>

#include "common/perception_defs.h"

namespace bg = boost::geometry;
using TrackedObjectPtr = std::shared_ptr<TrackedObject>;
using point_t = bg::model::d2::point_xy<float>;
using polygon_t = bg::model::polygon<point_t>;

class PostProcessCommon {
 public:
  PostProcessCommon();
  PostProcessCommon(PostProcessCommon const &) = delete;  // 不允许拷贝构造函数
  PostProcessCommon &operator=(PostProcessCommon const &) =
      delete;  // 不允许赋值运算符重载
  PostProcessCommon(PostProcessCommon &&) = delete;  // 不允许左值传递
  PostProcessCommon &operator=(PostProcessCommon &&) =
      delete;  // 不允许重载地址传递的运算符
  ~PostProcessCommon();

  /// @brief judge whether key is in container
  /// @param std::vector
  /// @param key
  /// @return bool
  static bool IsContained(const std::vector<uint32_t> &vec, uint32_t key);
};

#endif
